Crate jlabel

source ·
Expand description

HTS-style full-context label structure and parser/serializer from/to string.

use jlabel::{Label, Mora, Phoneme, Word};

use std::str::FromStr;

let label_str = concat!(
    "sil^n-i+h=o",
    "/A:-3+1+7",
    "/B:xx-xx_xx",
    "/C:02_xx+xx",
    "/D:02+xx_xx",
    "/E:xx_xx!xx_xx-xx",
    "/F:7_4#0_xx@1_3|1_12",
    "/G:4_4%0_xx_1",
    "/H:xx_xx",
    "/I:3-12@1+2&1-8|1+41",
    "/J:5_29",
    "/K:2+8-41"
);
let label: Label = label_str.parse()?;

assert_eq!(
    label.phoneme,
    Phoneme {
        p2: Some("sil".to_string()),
        p1: Some("n".to_string()),
        c: Some("i".to_string()),
        n1: Some("h".to_string()),
        n2: Some("o".to_string()),
    }
);
assert_eq!(
    label.mora,
    Some(Mora {
        relative_accent_position: -3,
        position_forward: 1,
        position_backward: 7,
    })
);
assert_eq!(
    label.word_next,
    Some(Word {
        pos: Some(2),
        ctype: None,
        cform: None,
    })
);
assert_eq!(label.breath_group_prev, None);

Structs§

  • AccentPhrase field of full-context label for current accent phrase (F field).
  • AccentPhrase field of full-context label for previous or next accent phrase (E and G field).
  • BreathGroup field of full-context label for current breath group (I field).
  • BreathGroup field of full-context label for previous or next breath group (H and J field).
  • The structure representing a single line of HTS-style full-context label.
  • Mora field of full-context label (A field).
  • Phoneme field of full-context label.
  • Utterance field of full-context label (K field).
  • Word field of full-context label (B, C, and D field).

Enums§